openapi: 3.0.1
info:
  title: Directus
  description: A real-time API and App dashboard for managing SQL database content.
  contact:
    email: contact@directus.io
  license:
    name: BUSL-1.1
    url: 'https://directus.io/bsl'
  version: '10'
externalDocs:
  description: Directus Docs
  url: 'https://docs.directus.io'
tags:
  - name: Activity
    description:
      All events that happen within Directus are tracked and stored in the activities collection. This gives you full
      accountability over everything that happens.
    x-collection: directus_activity
  - name: Assets
    description: Image typed files can be dynamically resized and transformed to fit any need.
  - name: Authentication
    description:
      All data within the platform is private by default. The public role can be configured to expose data without
      authentication, or you can pass an access token to the API to access private data.
  - name: Presets
    description:
      Presets hold the preferences of individual users of the platform. This allows Directus to show and maintain custom
      item listings for users of the app.
    x-collection: directus_presets
  - name: Collections
    description:
      Collections are the individual collections of items, similar to tables in a database. Changes to collections will
      alter the schema of the database.
    x-collection: directus_collections
  - name: Extensions
    description:
      Directus can easily be extended through the addition of several types of extensions, including layouts,
      interfaces, and modules.
    x-collection: directus_extensions
  - name: Fields
    description: Fields are individual pieces of content within an item. They are mapped to columns in the database.
    x-collection: directus_fields
  - name: Files
    description:
      Files can be saved in any given location. Directus has a powerful assets endpoint that can be used to generate
      thumbnails for images on the fly.
    x-collection: directus_files
  - name: Flows
    description: Flows enable custom, event-driven data processing and task automation.
    x-collection: directus_flows
  - name: Folders
    description: Group files by virtual folders.
    x-collection: directus_folders
  - name: Items
    description:
      Items are individual pieces of data in your database. They can be anything, from articles, to IoT status checks.
  - name: Operations
    description: Operations are the building blocks within Data Flows.
    x-collection: directus_operations
  - name: Permissions
    description: Permissions control who has access to what and when.
    x-collection: directus_permissions
  - name: Relations
    description:
      What data is linked to what other data. Allows you to assign authors to articles, products to sales, and whatever
      other structures you can think of.
    x-collection: directus_relations
  - name: Revisions
    description:
      Revisions are individual changes to items made. Directus keeps track of changes made, so you're able to revert to
      a previous state at will.
    x-collection: directus_revisions
  - name: Roles
    description: Roles are groups of users that share permissions.
    x-collection: directus_roles
  - name: Schema
    description: Retrieve and update the schema of an instance.
    x-authentication: admin
    x-schemas:
      - Schema
      - Diff
  - name: Server
    description:
      Access to where Directus runs. Allows you to make sure your server has everything needed to run the platform, and
      check what kind of latency we're dealing with.
  - name: Settings
    description: Settings control the way the platform works and acts.
    x-collection: directus_settings
  - name: Users
    description: Users are what gives you access to the data.
    x-collection: directus_users
  - name: Utilities
    description: Directus comes with various utility endpoints you can use to simplify your development flow.
    x-authentication: user
    x-schemas:
      - Files
      - Folders
      - Users
      - Roles
  - name: Versions
    description:
      Enables users to create unpublished copies of an item, modify them independently from the main version, and
      promote them to become the new main version when ready.
    x-collection: directus_versions
  - name: Webhooks
    description: Webhooks.
    x-collection: directus_webhooks
paths:
  # Activity
  /activity:
    $ref: './paths/activity/activities.yaml'
  /activity/comment:
    $ref: './paths/activity/activity-comments.yaml'
  /activity/{id}:
    $ref: './paths/activity/activity.yaml'
  /activity/comment/{id}:
    $ref: './paths/activity/activity-comment.yaml'

  # Assets
  /assets/{id}:
    $ref: './paths/assets/assets.yaml'

  # Authentication
  /auth/login:
    $ref: './paths/auth/login.yaml'
  /auth/refresh:
    $ref: './paths/auth/refresh.yaml'
  /auth/logout:
    $ref: './paths/auth/logout.yaml'
  /auth/password/request:
    $ref: './paths/auth/password-request.yaml'
  /auth/password/reset:
    $ref: './paths/auth/password-reset.yaml'
  /auth/oauth:
    $ref: './paths/auth/oauth.yaml'
  /auth/oauth/{provider}:
    $ref: './paths/auth/oauth-provider.yaml'

  # Items
  /items/{collection}:
    $ref: './paths/items/items.yaml'
  /items/{collection}/{id}:
    $ref: './paths/items/item.yaml'

  # Presets
  /presets:
    $ref: './paths/presets/presets.yaml'
  /presets/{id}:
    $ref: './paths/presets/preset.yaml'

  # Collections
  /collections:
    $ref: './paths/collections/collections.yaml'
  /collections/{id}:
    $ref: './paths/collections/collection.yaml'

  # Extensions
  /extensions:
    $ref: './paths/extensions/list.yaml'
  /extensions/{name}:
    $ref: './paths/extensions/update.yaml'
  /extensions/{bundle}/{name}:
    $ref: './paths/extensions/update-bundle.yaml'

  # Fields
  /fields:
    $ref: './paths/fields/fields.yaml'
  /fields/{collection}:
    $ref: './paths/fields/collection-fields.yaml'
  /fields/{collection}/{id}:
    $ref: './paths/fields/collection-field.yaml'

  # Files
  /files:
    $ref: './paths/files/files.yaml'
  /files/{id}:
    $ref: './paths/files/file.yaml'

  # Flows
  /flows:
    $ref: './paths/flows/flows.yaml'
  /flows/{id}:
    $ref: './paths/flows/flow.yaml'

  # Folders
  /folders:
    $ref: './paths/folders/folders.yaml'
  /folders/{id}:
    $ref: './paths/folders/folder.yaml'

  # Operations
  /operations:
    $ref: './paths/operations/operations.yaml'
  /operations/{id}:
    $ref: './paths/operations/operation.yaml'

  # Permissions
  /permissions:
    $ref: './paths/permissions/permissions.yaml'
  /permissions/me:
    $ref: './paths/permissions/permissions-me.yaml'
  /permissions/{id}:
    $ref: './paths/permissions/permission.yaml'

  # Relations
  /relations:
    $ref: './paths/relations/relations.yaml'
  /relations/{id}:
    $ref: './paths/relations/relation.yaml'

  # Revisions
  /revisions:
    $ref: './paths/revisions/revisions.yaml'
  /revisions/{id}:
    $ref: './paths/revisions/revision.yaml'

  # Roles
  /roles:
    $ref: './paths/roles/roles.yaml'
  /roles/{id}:
    $ref: './paths/roles/role.yaml'

  # Schema
  /schema/snapshot:
    $ref: './paths/schema/snapshot.yaml'
  /schema/apply:
    $ref: './paths/schema/apply.yaml'
  /schema/diff:
    $ref: './paths/schema/diff.yaml'

  # Server
  /server/info:
    $ref: './paths/server/info.yaml'
  /server/ping:
    $ref: './paths/server/ping.yaml'

  # Settings
  /settings:
    $ref: './paths/settings/settings.yaml'

  # Users
  /users:
    $ref: './paths/users/users.yaml'
  /users/{id}:
    $ref: './paths/users/user.yaml'
  /users/invite:
    $ref: './paths/users/invite.yaml'
  /users/invite/accept:
    $ref: './paths/users/invite-accept.yaml'
  /users/me:
    $ref: './paths/users/me.yaml'
  /users/me/track/page:
    $ref: './paths/users/me-tracking.yaml'
  /users/me/tfa/enable:
    $ref: './paths/users/me-tfa-enable.yaml'
  /users/me/tfa/disable:
    $ref: './paths/users/me-tfa-disable.yaml'

  # Utils
  /utils/hash/generate:
    $ref: './paths/utils/hash-generate.yaml'
  /utils/hash/verify:
    $ref: './paths/utils/hash-verify.yaml'
  /utils/sort/{collection}:
    $ref: './paths/utils/sort.yaml'
  /utils/import/{collection}:
    $ref: './paths/utils/import.yaml'
  /utils/export/{collection}:
    $ref: './paths/utils/export.yaml'
  /utils/cache/clear:
    $ref: './paths/utils/cache-clear.yaml'
  /utils/random/string:
    $ref: './paths/utils/random.yaml'

  # Versions
  /versions:
    $ref: './paths/versions/versions.yaml'
  /versions/{id}:
    $ref: './paths/versions/version.yaml'
  /versions/{id}/save:
    $ref: './paths/versions/save.yaml'
  /versions/{id}/compare:
    $ref: './paths/versions/compare.yaml'
  /versions/{id}/promote:
    $ref: './paths/versions/promote.yaml'

  # Webhooks
  /webhooks:
    $ref: './paths/webhooks/webhooks.yaml'
  /webhooks/{id}:
    $ref: './paths/webhooks/webhook.yaml'

components:
  schemas:
    Activity:
      $ref: './components/activity.yaml'
    Presets:
      $ref: './components/preset.yaml'
    Collections:
      $ref: './components/collection.yaml'
    Diff:
      $ref: './components/diff.yaml'
    Extensions:
      $ref: './components/extension.yaml'
    Fields:
      $ref: './components/field.yaml'
    Files:
      $ref: './components/file.yaml'
    Flows:
      $ref: './components/flow.yaml'
    Folders:
      $ref: './components/folder.yaml'
    Items:
      $ref: './components/item.yaml'
    Operations:
      $ref: './components/operation.yaml'
    Permissions:
      $ref: './components/permissions.yaml'
    Relations:
      $ref: './components/relation.yaml'
    Revisions:
      $ref: './components/revision.yaml'
    Roles:
      $ref: './components/role.yaml'
    Schema:
      $ref: './components/schema.yaml'
    Settings:
      $ref: './components/setting.yaml'
    Users:
      $ref: './components/user.yaml'
    Query:
      $ref: './definitions/query.yaml'
    Versions:
      $ref: './components/version.yaml'
    Webhooks:
      $ref: './components/webhook.yaml'
    x-metadata:
      type: object
      properties:
        total_count:
          description: Returns the total item count of the collection you're querying.
          type: integer
        filter_count:
          description:
            Returns the item count of the collection you're querying, taking the current filter/search parameters into
            account.
          type: integer
  parameters:
    # All path parameters
    Id:
      $ref: './parameters/id.yaml'
    UUId:
      $ref: './parameters/uuid.yaml'
    Collection:
      $ref: './parameters/collection.yaml'

    # All query parameters
    Search:
      $ref: './parameters/search.yaml'
    Page:
      $ref: './parameters/page.yaml'
    Offset:
      $ref: './parameters/offset.yaml'
    Sort:
      $ref: './parameters/sort.yaml'
    Meta:
      $ref: './parameters/meta.yaml'
    Limit:
      $ref: './parameters/limit.yaml'
    Filter:
      $ref: './parameters/filter.yaml'
    Fields:
      $ref: './parameters/fields.yaml'
    Export:
      $ref: './parameters/export.yaml'
    Version:
      $ref: './parameters/version.yaml'
  responses:
    NotFoundError:
      $ref: './responses/notFoundError.yaml'
    UnauthorizedError:
      $ref: './responses/unauthorizedError.yaml'
  securitySchemes:
    KeyAuth:
      type: apiKey
      in: query
      name: access_token
    Auth:
      type: apiKey
      in: header
      name: 'Authorization'
security:
  - Auth: []
  - KeyAuth: []
